Future Directions

The application binary interface standards will continue to evolve over time to accommodate new technology. Future evolution will increase the capabilities defined in the ABI specifications and will increase the standard development environment provided for application writers and ISVs. This section describes MIPS ABI vendor company directions for some of the issues to be addressed in future revisions of this specification.

Asynchronous I/O

The MIPS ABI group plans to follow the additional specifications to ISO/IEC 9945-1, known as P1003.4 with respect to asynchronous I/O, once the official standard has been ratified by the IEEE. It is expected that the approved version will be very close to the Draft 14 version. For planning and advanced development purposes, Draft 14 defines the interfaces in the following figure. These interfaces are also planned for inclusion in future versions of gABI.

Application developers are strongly cautioned that these interfaces are not yet an approved part of the ABI and may not be supported on all vendor platforms.




Header File: aio.h
typedef struct aiocb {
	int	aio_fildes;	/* file descriptor to perform aio on */
	off_t	aio_offset;	/* file offset position */
	volatile void *aio_buf;
	size_t	aio_nbytes;
	int	aio_reqprio;	/* aio priority, larger values lowers pri */
	sigevent_t aio_sigevent;/* signal to be generated on completion */
	int	aio_lio_opcode;	/* opcode for lio_listio() call */
	/* SGI defined */
	size_t	aio_nobytes;	/* return bytes */
	int	aio_whence;	/* for seeking */
	int	aio_errno;	/* return error from this aio op */
	int	aio_ret;	/* returned status */
} aiocb_t;

/* for aio_cancel() return values */
#define AIO_CANCELED	1	/* cancelled operation */
#define AIO_NOTCANCELED 2	/* some ops not cancelled */
#define AIO_ALLDONE	3	/* all aio has completed */

/* for aiocb.aio_lio_opcode */
#define LIO_READ	1
#define LIO_WRITE	2
#define LIO_NOP		3

/* for lio_listio mode flag */
#define LIO_WAIT	1
#define LIO_NOWAIT	2

extern int aio_read(struct aiocb *);
extern int aio_write(struct aiocb *);
extern int lio_listio(int, struct aiocb *[], int, sigevent_t *);
extern int aio_cancel(int, struct aiocb *);
extern int aio_error(struct aiocb *);
extern ssize_t aio_return(struct aiocb *);
extern int aio_suspend(const struct aiocb *[], int, timespec_t *);
extern int aio_fsync(int, struct aiocb *);

Magnetic Tape ioctl Compatibility

The MIPS ABI group plans to specify binary compatibility for common operations on magnetic tape via the ioctl system call. This would enable programs to manipulate the tape using binary compatible calls. Generally, these functions are defined by the existing tape ioctls, but different vendors have interpreted them in different ways. By defining MIPS ABI interfaces, the vendor can maintain binary compatiblity with their prior releases and add support for consistant ABI behavior.

Development Environment

The MIPS ABI group plans to specify commands and arguments for invocation of the C compiler and loader as part of a future revision to this document. This will facilitate porting, and will make end user linking more standardized.

Expanded Global Offset Table (GOT)

The current definition of the Global Offset Table limits an object to 16K external references. This has proven to be an inconvenience for applications with very large libraries or other situations with large numbers of external symbols. In future revisions of this document and the psABI, the MIPS ABI group intends to specify extensions to the GOT to permit more references.

Initialization and Finalization Ordering

Some applications require specific ordering of the invocation of the module initialization and finalization to achieve proper behavior of complex multi-module systems. The MIPS ABI group intends to investigate this requirement and propose mechanisms to fulfill it as part of future revisions to the this document and the psABI.

Enhancements to dlopen

To simplify the task of managing extremely complex dynamically configured programs, enhancements to the dlopen library call are being considered. These would automatically bring in libraries upon which the library specified in the dlopen depends. This is an area under investigation, and may not be incorporated into future revisions of the MIPS ABI.

Back to the Table of Contents
Back to the MIPS ABI Home Page


Maintained by webmaster@mipsabi.org
last modified on August 17, 1995

Copyright © 1995, MIPS ABI Group, Incorporated.